package com.aseo.business.hibernate;

import java.util.List;
import java.util.Set;

import javax.annotation.Resource;
import javax.validation.ConstraintViolation;

import org.springframework.stereotype.Service;

import com.aseo.exception.ConstraintViolationException;
import com.aseo.model.dao.Dao;
import com.aseo.model.entity.hibernate.Usuario;

@Service(value="com.aseo.business.hibernate.UsuarioManager")
public class UsuarioManager implements ManagerInterface<Usuario> {

	@Resource  
	private Dao dao;
	
	@Override
	public List<Usuario> getAll() {
		final List<Usuario> list = dao.find(Usuario.class);  
	    return list;
	}

	@Override
	public void persist(Usuario t) {
		dao.persist(t);
	}
	
	public Usuario get(Long id) {
		return dao.get(Usuario.class, id);
	}
	
	public void validate(Usuario usuario) throws ConstraintViolationException {

		Set<ConstraintViolation<Usuario>> constraintViolations = dao.validate(usuario);
		
		for (ConstraintViolation<Usuario> constraintViolation : constraintViolations) {
			throw new ConstraintViolationException(constraintViolation.getMessage());
		}
	}
	
	public List<Usuario> getUsuarios() {
		final List<Usuario> list = dao.find(Usuario.class);  
	    return list;
	}

	public List<Usuario> getUserByUserName(String userName) {
		final List<Usuario> list = dao.find(" SELECT usuario FROM com.aseo.model.entity.hibernate.Usuario usuario " +
				" WHERE  usuario.nombreUsuario = '" + userName + "'");
		return list;
	}

}
